package com.ruoyi.web.controller.baodao.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.baodao.entity.*;
import com.ruoyi.baodao.mapper.BDMapper;
import com.ruoyi.baodao.mapper.LinkTemplateMapper;
import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.DataSourceType;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;

@Slf4j
@Controller
@RequestMapping("baodao/linktemplate")
public class LinkTemplateController  extends BaseController {
    @Autowired
    LinkTemplateMapper linkTemplateMapper;
    @Autowired
    BDMapper bdMapper;

    private String prefix = "baodao/linktemplate";

    @GetMapping()
    public String operlog()
    {
        return prefix + "/linktemplate";
    }


    @PostMapping("/list")
    @ResponseBody
    @DataSource(value = DataSourceType.SLAVE)
    public TableDataInfo list(@Param("templatename") String templatename){

        SysUser sysUser = (SysUser) SecurityUtils.getSubject().getPrincipal();
        logger.info("查询条件" + templatename);
        /* LinkTemplateExample linkTemplateExample = new LinkTemplateExample();
        LinkTemplateExample.Criteria criteria = linkTemplateExample.createCriteria();
        criteria.andShopidEqualTo(sysUser.getDept().getDeptName());
        List<LinkTemplate> linkTemplates = linkTemplateMapper.selectByExample(linkTemplateExample);*/
        List<LinkTemplate> linkTemplates = bdMapper.queryTemplate(sysUser.getDept().getDeptName(),templatename);

        log.info("模板名称列表：" + linkTemplates.toString() );

        return getDataTable(linkTemplates);

    }

/*    @PostMapping("/list2")
    @ResponseBody
    @DataSource(value = DataSourceType.SLAVE)
    public TableDataInfo list2(){
        SysUser sysUser = (SysUser) SecurityUtils.getSubject().getPrincipal();
        LinkTemplateExample linkTemplateExample = new LinkTemplateExample();
        LinkTemplateExample.Criteria criteria = linkTemplateExample.createCriteria();
        criteria.andShopidEqualTo(sysUser.getDept().getDeptName());
        List<LinkTemplate> linkTemplates = linkTemplateMapper.selectByExample(linkTemplateExample);
       // List<LinkTemplate> linkTemplates = bdMapper.queryTemplate(sysUser.getDept().getDeptName());


        return getDataTable(linkTemplates);

    }*/

    @PostMapping("/addTemplate")
    @ResponseBody
    @DataSource(value = DataSourceType.SLAVE)
    public AjaxResult addTemplate(@Param("templateName") String templateName, @Param(("tjdata")) String  tjdata, @Param("zhdata") String  zhdata){
        SysUser sysUser = (SysUser) SecurityUtils.getSubject().getPrincipal();
        // 本次交易Id = 登录用户 + 店名 + 时间戳
        String id = sysUser.getLoginName() + '-' + sysUser.getDept().getDeptName() + '-' + System.currentTimeMillis();
/*        List<MFGoods9999> tjdata1 = (List<MFGoods9999>) JSON.parseObject(tjdata);
        List<MFGoods9999> zhdata1 = (List<MFGoods9999>) JSON.parseObject(zhdata);*/

        logger.info(templateName);

        // 查询 模板名称 是否有重复
        LinkTemplateExample linkTemplateExample = new LinkTemplateExample();
        LinkTemplateExample.Criteria criteria = linkTemplateExample.createCriteria();
        criteria.andShopidEqualTo(sysUser.getDept().getDeptName());
        criteria.andTemplatenameEqualTo(templateName);
        List<LinkTemplate> linkTemplates = linkTemplateMapper.selectByExample(linkTemplateExample);
        if(linkTemplates.size() > 0) {
            return error("存在相同模板名称");
        }

        System.out.println(tjdata);
        int i = 0;

        JSONArray jsonArray = JSON.parseArray(tjdata);
        if(jsonArray.size() >0){

            for (Object obj : jsonArray) {
                           JSONObject jsonObject = (JSONObject) obj;
                        //   System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
/*                Template template = new Template();
                template.setShopid(sysUser.getDept().getDeptName());
                template.setTemplateName(templateName);
                template.setShowFlag("1");
                template.setLinkGoodsCode(jsonObject.getString("goodscode"));*/
                LinkTemplate linkTemplate = new LinkTemplate();
                linkTemplate.setTemplatename(templateName);
                linkTemplate.setMadeTime(new Date());
                linkTemplate.setShowflag("1");
                linkTemplate.setShopid(sysUser.getDept().getDeptName());
             //   linkTemplate.setTid(UUID.randomUUID().toString());
                linkTemplate.setTid(id);
                linkTemplate.setLinkgoodscode(jsonObject.getString("goodscode"));

                int result = linkTemplateMapper.insert(linkTemplate);
                if(result >0){
                    i++;
                }

            }

        }

        JSONArray jsonArray2 = JSON.parseArray(zhdata);
        if(jsonArray2.size() >0){
            for (Object obj : jsonArray2) {
                JSONObject jsonObject = (JSONObject) obj;
                //   System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));

                LinkTemplate linkTemplate = new LinkTemplate();
                linkTemplate.setTemplatename(templateName);
                linkTemplate.setMadeTime(new Date());
                linkTemplate.setShowflag("2");
                linkTemplate.setShopid(sysUser.getDept().getDeptName());
          //      linkTemplate.setTid(UUID.randomUUID().toString());
                linkTemplate.setTid(id);
                linkTemplate.setLinkgoodscode(jsonObject.getString("goodscode"));
               int result = linkTemplateMapper.insert(linkTemplate);
               if(result > 0){
                   i++;
               }

            }

        }

        return AjaxResult.success("模板插入成功:" + i);
    }

    // 药品关系模板维护
    @GetMapping("/edit")
    public String edit()
    {
        logger.info("药品关系模板维护");
        return prefix + "/edit";
    }


    // 药品关系模板维护数据
    @GetMapping("/listTemplate")
    public String listTemplate()
    {
        logger.info("药品关系模板维护");
        return prefix + "/edit";
    }

    // 根据模板名 查询 模板下 关联药品数据
    @PostMapping("/queryTemplate")
    @ResponseBody
    @DataSource(value = DataSourceType.SLAVE)
    public List<MFGoods9999>  queryTemplate(String templatename){
        SysUser sysUser = (SysUser) SecurityUtils.getSubject().getPrincipal();
        List<MFGoods9999> mfGoods9999s = new ArrayList<>();
        LinkTemplateExample linkTemplateExample = new LinkTemplateExample();
        LinkTemplateExample.Criteria criteria = linkTemplateExample.createCriteria();
        criteria.andShopidEqualTo(sysUser.getDept().getDeptName());
        criteria.andTemplatenameEqualTo(templatename);

        List<LinkTemplate> linkTemplates = linkTemplateMapper.selectByExample(linkTemplateExample);

        for (LinkTemplate template:
             linkTemplates) {
            List<MFGoods9999> list = bdMapper.queryGoods(template.getLinkgoodscode(), null, sysUser.getDept().getDeptName(), null, null, null);

            MFGoods9999 mfGoods9999 = list.get(0);
            mfGoods9999.setShowFlag(Integer.valueOf(template.getShowflag()));
            if (mfGoods9999 != null) {
                mfGoods9999s.add(mfGoods9999);
            }
        }

        return mfGoods9999s;
    }


    // 删除模板
    @PostMapping("/deleteTemplate")
    @ResponseBody
    @DataSource(value = DataSourceType.SLAVE)
    public AjaxResult  deleteTemplate(String templatename){
        SysUser sysUser = (SysUser) SecurityUtils.getSubject().getPrincipal();
        LinkTemplateExample linkTemplateExample = new LinkTemplateExample();
        LinkTemplateExample.Criteria criteria = linkTemplateExample.createCriteria();
        criteria.andShopidEqualTo(sysUser.getDept().getDeptName());
        criteria.andTemplatenameEqualTo(templatename);
         int result = linkTemplateMapper.deleteByExample(linkTemplateExample);
         if(result > 0){
        return success();}
         else {
             return error("删除数据失败");
         }
    }



}
